git submodule

Gitリポジトリの中に別のGitリポジトリを埋め込む仕組み。特定のコミットを参照することで、依存関係のバージョン管理を厳密に行える。

基本的な使い方

# submoduleを追加
git submodule add https://github.com/org/repo.git path/to/submodule

# submoduleを初期化・更新
git submodule update --init --recursive

# submoduleを最新に更新
git submodule update --remote path/to/submodule

ナレッジベースでの活用

組織レベルのナレッジを各プロダクトに配信する方法として活用:

product-a/
├── .knowledge/
│   └── org/    # git submodule
└── docs/

各プロダクトは特定のコミットを参照することで、組織ナレッジのバージョンを固定できる。

利点

欠点

npm packageとの比較

方式 用途 メリット
git submodule 変更頻度が高い場合 バージョン管理が厳密、ローカル編集可能
npm package 安定している場合 標準ワークフロー、semver

関連概念